package cn.hennancf.picture.tools;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import cn.hennancf.picture.entities.Folder;
import cn.hennancf.picture.enums.Message;

/** 
* @author  作者: 陈飞
* @date 创建时间：2017年3月11日 下午4:11:39 
* @version 1.0 
* @parameter  
* @since  
* @return  
*/

public class FileUtils {
    
    final String END_WHIT_JPG_LOW = ".png";
    final String END_WHIT_JPG_UP = ".PNG";
    
//    通过给的路径找到文件夹
    public Folder getFiles(File file){
     
        Folder father = new Folder();
        File [] sonFile = new FileUtils().getSonFile(file);//获取文件夹的所有文件
        
//        判断文件是否为空
        if (null == sonFile || 0== sonFile.length) {
            System.out.println(Message.NULL_FOLDER);
            return null;
        }
        
//        为文件夹赋值
        for (File fi : sonFile) {
            if (fi.isDirectory()) {
                Folder sonFolder = new Folder(fi,fi.getName());
                father.getFolders().add(sonFolder);
            }
        }
        
        father.setFiles(Arrays.asList(sonFile));
        father.setName(file.getName());
        father.setUrl(file);
        return father;
    }
    
//    获取文件夹的所有文件
    private  File [] getSonFile(File file){
        
//        判断file是否为空
        if (!this.IsFile(file)) {
            return null; 
         }
        
//        尝试获取文件夹下的所子文件
            File [] sonFile = file.listFiles();
            return sonFile;
    }
    
    
//    获取文件夹的所有图片的ＵＲＬ
    public  List<File>  getPictureFiles(File file){
        List<File> pictureFiles = new ArrayList<File>();
//        验证 参数
        if (!this.IsFile(file)) {
           return null; 
        }
        
//        尝试获取文件夹下的所子文件
            File [] sonFile = file.listFiles();
            for (File file2 : sonFile) {
                if (file2.getName().endsWith(END_WHIT_JPG_LOW) |
                    file2.getName().endsWith(END_WHIT_JPG_UP)) {
                    pictureFiles.add(file2);
                }
            }
            return pictureFiles;
    }
    
    
//    判断是否为文件夹
    public boolean IsFile(File file){
        if (null != file && file.isFile()) {
            System.out.println(Message.ERROR_PATH.getMessage());
            return false;
        }
        return true;
    }
    
}
